home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Think Class Libraries / MacTCP class library / MacTCP class sources / DemoCode.c < prev   
Encoding:
C/C++ Source or Header  |  1994-11-30  |  4.4 KB  |  144 lines  |  [TEXT/KAHL]

  1. /*************************************************************************
  2.  
  3.   Some demo code
  4.   
  5.       --Eric Johnson 5/25/92  (Modified by isl 6/5/92)
  6.       
  7.       This is hack -- it was written to simply test the classes.
  8.       At the very least, an appropriate exception catcher should be setup.
  9.       Everything would also work much better from inside a real application.
  10.   
  11. **************************************************************************/
  12.  
  13. #include    "CTCPClient.h"
  14.     
  15. extern    tSystem    gSystem;                        //    System information
  16.     
  17. void main()
  18. Begin
  19.     CTCPClient*            MyNetwork;
  20.     TCPiopb*                asyncResult;
  21.     TCPStatusPB            MyStatus;
  22.     TCPParam                MyParam;
  23.     TCPStats                MyStats;
  24.     char                        name[kNameLength];
  25.     ip_addr                    address;
  26.     ip_port                    port;
  27.     char*                        input= Null;
  28.     Size                        inputLength= 200;
  29.     char                        output[200];
  30.     OSErr                        error= noErr;
  31.     short                        errorCount= Null;
  32.     Boolean                    quit= False;
  33.     Boolean                    close= False;
  34.     
  35.     TRY
  36.     {
  37.         gSystem.systemVersion= 0x0603;
  38.         FailOSErr(error);
  39.         errorCount++;
  40.     
  41.         MyNetwork= new CTCPClient;
  42.         MyNetwork->ITCPClient();
  43.         
  44.         printf("We are contacting a server...\n");
  45.         
  46.         strcpy(name, "mars");                //    Any machine name with an FTP daemon running will do here....
  47.         printf("Resolving %s...\n\n", name);
  48.         MyNetwork->SetAddress(name, address= Null, port= 21);
  49.         MyNetwork->GetStream()->GetDestination(name, &address, &port);
  50.         printf("Name: %s;\nAddress: 0x%lx or %lu;\nPort: %d.\n\n", name, address, address, port);
  51.         
  52.         FailOSErr(error= MyNetwork->Create(8192) );
  53.         errorCount++;
  54.         quit= True;
  55.         printf("I've just created a stream...\n");
  56.         
  57.         FailOSErr(error= MyNetwork->OpenConnection() );
  58.         errorCount++;
  59.         close= True;
  60.         printf("I've just opened a connection...\n");
  61.         MyNetwork->SetRetries(5);
  62.         FailOSErr(error= MyNetwork->ReceiveData(&input, &inputLength) );
  63.         errorCount++;
  64.         printf("We received %lu bytes of data back.\n", inputLength);
  65.         if (inputLength >= 200)
  66.             input[199]= 0;
  67.         printf("Data: %s\n", input);
  68.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  69.         
  70.         FailOSErr(error= MyNetwork->GetStream()->Status(&MyStatus) );
  71.         errorCount++;
  72.         printf("Status: \n");
  73.         printf("    Last round trip time was %lu ms.\n",MyStatus.lastRTT);
  74.         printf("    Smoothed round trip time was %lu ms.\n",MyStatus.srtt);
  75.         printf("\n\n\nPress <Return> to continue.\n\n"); getchar();
  76.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  77.         
  78.         strcpy(output, "Hi \n");
  79.         printf("Sending data (Hi )...\n");
  80.         FailOSErr(error= MyNetwork->SendData(output, strlen(output)) );
  81.         errorCount++;
  82.         
  83.         MyNetwork->SetRetries(5);
  84.         FailOSErr(error= MyNetwork->MyBufferReceiveData(input, &inputLength) );
  85.         errorCount++;
  86.         printf("We received %lu bytes of data back.\n", inputLength);
  87.         if (inputLength >= 200)
  88.             input[199]= Null;
  89.         else
  90.             input[inputLength]= Null;
  91.         printf("Data: %s\n", input);
  92.         ForgetPtr(input);
  93.         
  94.         printf("The last error was %d.\n", error= MyNetwork->GetStream()->GetLastError());
  95.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  96.         
  97.         FailOSErr(error= MyNetwork->GetStream()->Status(&MyStatus) );
  98.         errorCount++;
  99.         printf("Status: \n");
  100.         printf("    Last round trip time was %lu ms.\n",MyStatus.lastRTT);
  101.         printf("    Smoothed round trip time was %lu ms.\n",MyStatus.srtt);
  102.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  103.         
  104.         printf("Okay... now for some of the technical data...\n");
  105.         FailOSErr(error= MyNetwork->GetStream()->GlobalInfo(&MyParam, &MyStats) );
  106.         errorCount++;
  107.         printf("    tcpMaxWindow: %lu \n",MyParam.tcpMaxWindow);
  108.         printf("    tcpMaxConn: %lu \n",MyParam.tcpMaxConn);
  109.         printf("    tcpMaxSegSize: %lu \n",MyParam.tcpMaxSegSize);
  110.         printf("    tcpOctetsRetrans: %lu \n",MyStats.tcpOctetsRetrans);
  111.         printf("    tcpRetransPkts: %lu \n",MyStats.tcpRetransPkts);
  112.         printf("    tcpOctetsIn: %lu \n",MyStats.tcpOctetsIn);
  113.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  114.         
  115.         MyNetwork->SetRetries(5);
  116.         FailOSErr(error= MyNetwork->GetLocalAddress(&address) );
  117.         errorCount++;
  118.         printf("And my address is 0x%lx or %lu.\n\n", address, address);
  119.         
  120.         FailOSErr(error= MyNetwork->Close() );
  121.         errorCount++;
  122.         printf("I've just closed our connection.\n");
  123.         
  124.         FailOSErr(error= MyNetwork->Quit() );
  125.         errorCount++;
  126.         printf("I've just released our stream.\n");
  127.         
  128.         printf("The last error was %d.\n", error= MyNetwork->GetStream()->GetLastError());
  129.         printf("\n=+=+=+=+=+=+=+=+=+=+=\n\n");
  130.         
  131.         ForgetObject(MyNetwork);
  132.     }
  133.     CATCH
  134.     {
  135.         SysBeep(5);
  136.         Debugger();
  137.         if (close)    error= MyNetwork->Close();
  138.         if (quit)        error= MyNetwork->Quit();
  139.         error= MyNetwork->Kill();
  140.         NO_PROPAGATE;
  141.     }
  142.     ENDTRY
  143. }
  144.